Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Modelos de programación paralela. Paradigmas de programación paralela (página 2)




Enviado por Pablo Turmero



Partes: 1, 2

Monografias.com

Ejemplo: C*

Lenguaje de programación para paralelismo de datos. Extensión del lenguaje C, diseñado por Thinking Machines Corporation para el computador CM-2.

Incluye un método para describir el tamaño y la forma de los datos paralelos y crear variables paralelas. Incluye operadores y expresiones para los datos paralelos.
Paralelismo de datos

Monografias.com

Variables:

variables escalares: idéntica a una variable ordinaria. Se asignan en el host.

variables paralelas:
Se asignan en todos los nodos.
Tienen tantos elementos como número de procesadores.
Una variable paralela tiene una "forma" además de un tipo.
Una "forma" es una plantilla para los datos paralelos, o sea una forma de configurar los datos lógicamente.
Define cuántos elementos paralelos existen y cómo están organizados.
Una "forma" tiene un número de dimensiones, rango, con un número de procesadores o posiciones en cada dimensión.
Paralelismo de datos

Monografias.com

shape [1024] ring
shape [1024][1024] mesh

int flag flag
int ring:a a
int mesh:b b

Paralelismo de datos

Monografias.com

C* no permite que el programador especifique explícitamente el mapeo virtual a físico. C* mapea los procesadores virtuales en procesadores físicos de forma que los procesadores virtuales vecinos se mapean en procesadores físicos vecinos.
C* permite especificar a través de qué dimensiones de la "forma" se hacen comunicaciones más a menudo. El compilador usa esta información para reducir costos de comunicación.
Después de que se ha especificado una forma, se pueden declarar variables paralelas de esa "forma". Las variables paralelas tienen un tipo, una clase de almacenamiento, y una forma.
Paralelismo de datos

Monografias.com

Operaciones paralelas
Si los operandos de una operación son escalares, el código C* es igual que el código C y la operación se realiza en el host.

Si los operandos son variables paralelas,
x+=y donde x e y son variables paralelas. Esta asignación añade el valor de y en cada posición de la "forma" al valor de x en la posición correspondiente de la forma. Todas las sumas tienen lugar en paralelo. x e y deben ser de la misma "forma".
x=a, donde a es una variable escalar, el valor de a se almacena en cada posición de x. Esto es similar a una operación de broadcast. a =[4]x es válida y asigna a a el valor de x de la cuarta posición de la forma.
a+=x suma todos los valores de x y los almacena en a.
Paralelismo de datos

Monografias.com

Comunicación. C* soporta dos métodos de comunicación interprocesador:

comunicación en red: las variables paralelas del mismo tipo pueden comunicarse en patrones regulares. Es bastante eficiente.

comunicación general: el valor de cualquier elemento de una variable paralela se puede enviar a cualquier otro elemento aunque las variables paralelas no sean de la mismo "forma".
Paralelismo de datos

Monografias.com

Primitivas para asignar variables compartidas.
Existen dos tipos de variables: compartidas (shared) y locales (private)

Primitivas para la exclusión mutua y sincronización.
Una sección crítica contiene código que sólo puede ser ejecutado por un procesador en un momento determinado. Los lenguajes proporcionan llaves (locks) para ayudar al programador a cumplir la exclusión mutua en la ejecución de secciones críticas.
Las primitivas de sincronización de barreras (barrier synchronization) se usan cuando los procesos necesitan sincronizarse antes de que acabe la ejecución. Cada proceso espera en la barrera a los otros procesos, y después de la sincronización todos los procesos continúan con su ejecución.
Espacio de direcciones compartido

Monografias.com

Primitivas para la creación de procesos
Se realiza mediante una llamada al sistema que crea procesos idénticos al proceso padre. Estos procesos comparten las variables declaradas "compartidas" por los procesos padre así como las llaves declaradas e inicializadas por los procesos padre. En la mayoría de computadores de espacio de direcciones compartido, esta operación se llama fork. Cuando todos los subprocesos terminan, se mezclan usando otra primitiva, normalmente llamada join.
En vez de crear procesos al principio de la ejecución, podemos tener un solo proceso, llamado proceso maestro. Cuando el maestro necesita realizar una tarea en paralelo, crea un número predeterminado de procesos, llamados procesos esclavos. Cuando la tarea se completa, los procesos esclavos terminan y devuelven el control al proceso maestro.
Espacio de direcciones compartido

Monografias.com

Programa secuencial. El compilador se encarga de paralelizarlo.
Normalmente en sistemas de memoria compartida.
Paralelizan bucles: dividen el trabajo en los bucles entre los distintos procesadores
Si puede haber dependencia de datos no paraleliza:
para i=1 to n
a[i]=b[i]+a[i-1]
finpara
Se puede forzar la paralelización con opciones de compilación, o con directivas (OpenMP).
Generan ficheros con información de bucles paralelizados y no paralelizados, y el motivo.
Compiladores paralelizantes

Monografias.com

Primitivas que debería contener un lenguaje paralelo:
Paralelización de bucles,
Pipeline,
Crear grupo de procesos, .
Asociar a cada constructor (esqueleto) una función de coste.
Mapeo de los procesos generados en función de la función de coste.
Ejemplo mpC
Lenguajes paralelos de alto nivel
Librerías para campos específicos de trabajo
Desarrollar librerías para campos donde más se usa la computación paralela, con capacidades de autooptimización: el usuario llama a la rutina y esta decide cuántos y qué procesadores usar, la distribución de datos, .
Álgebra lineal, transformada rápida de Fourier, .

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter